package msecurity.cliente;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class VideoList {
	private String titulo;
	private String duracion;
	private String path;
	private String imagen;
	private Integer id;
	
	public String getTitulo(){
		return titulo;
	}
	
	public String getDuracion(){
		return duracion;
	}
	
	public String getPath(){
		return path;
	}
	
	public String getImagen(){
		return imagen;
	}
	
	public Integer getId(){
		return id;
	}
	
	public void setTitulo(String title){
		this.titulo = title;
	}
	
	public void setDuracion(String length){
		this.duracion = length;
	}
	
	public void setPath(String p){
		this.path = p;
	}
	
	public void setImagen(String img){
		this.imagen = img;
	}
	
	public void setId(Integer identificador){
		this.id = identificador;
	}
	
	public String[] getItems(){
		String[] items = {
				id.toString(),titulo,duracion,path,imagen
			};
		return items;
	}
	
	
	public static List<VideoList> Deserialize(File file) throws ParserConfigurationException, SAXException, IOException{
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		Document doc = db.parse(file);
		doc.getDocumentElement().normalize();
		//System.out.println("Root element " + doc.getDocumentElement().getNodeName());
		NodeList nodeLst = doc.getElementsByTagName("VideoList");
		List<VideoList> listado = new ArrayList<VideoList>();
		for (int s = 0; s < nodeLst.getLength(); s++) {
			Node fstNode = nodeLst.item(s);
		    if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
		    	VideoList video = new VideoList();
		    	
		    	Element fstElmnt = (Element) fstNode;
		    	NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("Titulo");
		    	Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
		    	NodeList fstNm = fstNmElmnt.getChildNodes();
		    	//System.out.println("Titulo : "  + ((Node) fstNm.item(0)).getNodeValue());
		    	video.setTitulo(((Node) fstNm.item(0)).getNodeValue().toString());
		    	
		    	fstElmnt = (Element) fstNode;
		    	fstNmElmntLst = fstElmnt.getElementsByTagName("duracion");
		    	fstNmElmnt = (Element) fstNmElmntLst.item(0);
		    	fstNm = fstNmElmnt.getChildNodes();
		    	//System.out.println("Titulo : "  + ((Node) fstNm.item(0)).getNodeValue());
		    	video.setDuracion(((Node) fstNm.item(0)).getNodeValue().toString());
		    	
		    	fstElmnt = (Element) fstNode;
		    	fstNmElmntLst = fstElmnt.getElementsByTagName("id");
		    	fstNmElmnt = (Element) fstNmElmntLst.item(0);
		    	fstNm = fstNmElmnt.getChildNodes();
		    	//System.out.println("Titulo : "  + ((Node) fstNm.item(0)).getNodeValue());
		    	video.setId(Integer.valueOf(((Node) fstNm.item(0)).getNodeValue().toString()));
		    	
		    	fstElmnt = (Element) fstNode;
		    	fstNmElmntLst = fstElmnt.getElementsByTagName("Imagen");
		    	fstNmElmnt = (Element) fstNmElmntLst.item(0);
		    	fstNm = fstNmElmnt.getChildNodes();
		    	//System.out.println("Titulo : "  + ((Node) fstNm.item(0)).getNodeValue());
		    	video.setImagen(((Node) fstNm.item(0)).getNodeValue().toString());
		    	
		    	fstElmnt = (Element) fstNode;
		    	fstNmElmntLst = fstElmnt.getElementsByTagName("Path");
		    	fstNmElmnt = (Element) fstNmElmntLst.item(0);
		    	fstNm = fstNmElmnt.getChildNodes();
		    	//System.out.println("Titulo : "  + ((Node) fstNm.item(0)).getNodeValue());
		    	video.setPath(((Node) fstNm.item(0)).getNodeValue().toString());
		    	listado.add(video);
		    }
		}
		
		return listado;
	}
}
